<template>
  <auth-button :size="btnSize" :type="btnType" icon="el-icon-download" :label="btnName"  v-if="btnDisplay" @click="exportData" :menuCode="menuCode" :perms="perms"></auth-button>
</template>

<script>
  import { openDownloadFile } from '@/utils/devUtils' // downFile
  import AuthButton from '@/components/auth/authButton'
  export default {
    components: {
      AuthButton
    },
    props: {
      // 所属菜单Code-->全局唯一
      menuCode: {
        type: String,
        default: null
      },
      // 按钮权限标识，外部使用者传入
      perms: {
        type: String,
        default: null
      },
      // 按钮名称
      btnName: {
        type: String,
        default: function () {
          return '导出'
        }
      },
      // 按钮类型
      btnType: {
        type: String,
        default: function () {
          return 'small'
        }
      },
      // 按钮大小
      btnSize: {
        type: String,
        default: function () {
          return ''
        }
      },
      // 是否显示
      btnDisplay: {
        type: Boolean,
        default: function () {
          return true
        }
      },
      // 模板导出参数
      queryParas: {
        type: Object,
        default: function () {
          return {}
        }
      },
      // 模板编码
      templateCode: {
        type: String,
        required: false
      },
      // 是否转换成pdf
      createType: {
        type: Boolean,
        default: function () {
          return false
        }
      },
      // 导出前检查方法
      beforeExport: {
        type: Function,
        default: null
      },
      // 导出之后是否下载
      downloadFlag: {
        type: Boolean,
        default: function () {
          return true
        }
      },
      // 行数据
      rowData: {
        type: Object,
        default: function () {
          return null
        }
      },
      // 行号
      rowIndex: {
        type: Number,
        default: function () {
          return null
        }
      },
      // 导出api接口
      exportApi: {
        type: Object,
        default: null
      },
      // 分页查询调用的api字符串
      exportFun: {
        type: String,
        default: function () {
          return 'createTemplate'
        }
      },
      fileName: {
        type: String,
        default: ''
      }
    },
    computed: {
    },
    methods: {
      exportData () {
        this.exportApi[this.exportFun](this.queryParas).then(res => {
          openDownloadFile(res)
        })
      }
    }
  }
</script>
